# 控制器自动打包拓扑图项目代码

# 背景

目前拓扑图是个独立的项目,每次更改代码后需要打包->复制文件去控制器项目。

频繁地修改代码下这种方式是不可取的,于是在控制器的打包脚本中,增加将拓扑图打包到指定路径的逻辑,解决这种问题。

# 实现

# 拉取拓扑图项目代码

公司项目使用的gitlab,而gitlab拉取代码一般都通过生成个设备的秘钥,但是我们打包服务器通常不是固定的一台,所以通过注册一个个人token去拉取代码。

git clone http://oauth2:<你的token>@code.sangfor.org/<namespace>/<repo_name>.git

# 拉取node.js

因为公司是内网环境,不能直接拉取公网的node.js包,所以将node包下载好后放在svn服务器上(旧有逻辑),打包时拉取下来

svn export svn://path --force --username=1 --password=1 --force  --no-auth-cache

拉下来后解压

echo ">> tar -xvf..."
tar -xvf ./node-v16.15.0-linux-x64.tar.xz
rm -rf ./node-v16.15.0-linux-x64.tar.xz

修改权限

echo ">> chmod node"
chmod +x ./node-v16.15.0-linux-x64/bin/*
if [ $? -ne 0 ]; then
    echo "chmod node error!"
    exit 1
fi

添加临时环境变量(重点)

export PATH=$PATH:$PWD/node-v16.15.0-linux-x64/bin

因为不需要安装node到环境中,所以这里添加node到临时环境变量中,只在本线程中生效

# 安装项目依赖

因为公司内网搭建了自己的npm服务器,所以这里先要切换下npm服务器路径再进行安装

echo ">> npm registry"
npm config set registry http://path
echo ">> npm install..."
npm install
echo ">> npm run build..."
npm run build

# 复制打包文件

打包好后复制文件到所需文件夹路径即可

echo ">> copy dist"
cd ../
cp -r UED-Graph/dist/* ./WLAN/js/components/vendor/topo
echo ">> delete UED-Graph"
rm -rf ./UED-Graph

# 遇到的问题

# shell文件格式

因为是在windows下进行的编写,所以传到linux后运行时会报格式问题

进vim修改下格式即可。

:set fileformat=unix
:wq

# 报错GLIBC_2.16 not found

这是因为Jenkins环境老旧

打包流水线不止是打包前端代码,还有硬件那边的代码,环境依赖不敢随便升级

这联系后台人员去处理了